11792
10751
Jsem absolutní začátečník, dva týdny jsem studoval samy a připravoval se na bootcamp, který přijde za měsíc. Ve snaze zlepšit své dovednosti a „naučit se myslet jako vývojář“ jsem se pustil do projektu, který se pokouší vyřešit problém v reálném světě.
Moje žena podniká a vyžaduje, aby generovala faktury pro své klienty. Pokouším se použít HTML a JavaScript k vytvoření webové aplikace, která jí umožňuje rychle vytvářet vlastní faktury, místo aby je pokaždé ručně vypisovala.
V aktuální verzi si od ní výzva vyžádá číslo. Toto číslo generuje stejný počet řádků se třemi sloupci v HTML. To jí umožňuje přizpůsobit fakturu s přesným počtem polí, která potřebuje.
Sloupec 1 obsahuje název produktu. Ve stejném řádku obsahuje sloupec 2 počet jednotek, zatímco sloupec 3 obsahuje celkové náklady na tento produkt, což je základní cena vynásobená počtem jednotek. Chci, aby k tomuto výpočtu došlo po kliknutí na tlačítko. Ale jsem zaseknutý.
Abych mohl provést matematiku, musím být schopen získat celá čísla z každého řádku a sloupce a předat je do funkce. Ale protože každý řádek a sloupec byl generován automaticky, nemají žádné jedinečné atributy a nelze je tak identifikovat. Jsem schopen provést matematiku v každém sloupci, ale ne napříč každým řádkem.
Jelikož jsem tak nový, učil jsem se pouze z několika úvodních kurzů Codecademy a několika videí na YouTube, nevím, jak vyhodnotit, zda přistupuji k projektu úplně špatně, nebo jestli mi chybí nějaký trik, nebo pokud se zatím něco nenaučilo. Pokud by mě někdo s určitými odbornými znalostmi mohl postrčit správným směrem, opravdu bych to ocenil!
Připojil jsem veškerý kód k tomuto příspěvku. Omlouvám se, pokud je to hrozný nepořádek. Jdi na mě snadno, jsem začátečník!
const invDate = Date ();
var field = " " +
" " +
"  

"; document.getElementById ('newInvoice'). onclick = function () { nechat fakturovaný název = výzva ('Komu je tato faktura vystavena?', 'Zadejte jméno'); let productFields = Number (prompt ('Kolik názvů produktů na této faktuře?', 'Zadejte prosím číslo')); let fields = '' let dynHtml = '' if (fakturovaný název! = null && productFields! = null) { for (let i = 1; i <= productFields; i ++) { pole + = pole}; } else {upozornění ('Zadejte prosím platné údaje.'); }; dynHtml = "


" + „

FAKTURA

“ + "

Připraveno pro: " + fakturovanéJméno + ", na" + „

" + invDate + "



" + pole + "

" + "
"; document.write (dynHtml); document.getElementById ('vypočítat'). onclick = funkce getQtyFields () { let qtyInputs = document.getElementsByName ('qty'), resultQty = 0; for (let j = 0; j
Jak jste řekli, vaším hlavním problémem je najít způsob, jak dát každému vstupnímu poli v jejich vlastním řádku svůj vlastní jedinečný identifikátor. Tímto způsobem můžete vypočítat cenu za každý řádek a vložit ji do cenového pole.
Nejprve musíte začít s poli:
var field = " " +
" " +
"  

"; document.getElementById ('newInvoice'). onclick = function () { ... for (let i = 1; i <= productFields; i ++) { pole + = pole}; ... }; Každá skupina potřebuje svůj vlastní identifikátor. Tímto způsobem můžete později odkázat na každý vstup v každém řádku a vypočítat mezisoučet ceny. Atribut třídy můžete přiřadit několika prvkům, abyste na ně později odkazovali. Tato třída může být cokoli, pokud není v rozporu s třídou pro jakýkoli jiný řádek. Jako svůj identifikátor můžete použít i smyčky, protože se mění s každou smyčkou. for (let i = 1; i <= productFields; i ++) { var field = " " + " " + "

"; pole + = pole }; Tím přidáte řádek třídy - {i} do každého pole v každém řádku. Ještě lépe to můžete refaktorovat do své vlastní funkce funkce generateFields (i) { return " " + " " + "

"; } for (let i = 1; i <= productFields; i ++) { pole + = generateFields (i); }; Získáte něco podobného následujícímu html





Nyní ve své funkci výpočtu můžete odkazovat na tyto řádky a vypočítat jejich cenu. Zde můžete procházet vstupní pole „položky“. document.getElementById ('vypočítat'). onclick = funkce getQtyFields () { let itemInputs = document.getElementsByName ('item') for (let i = 0; i ) for (let i = 0; i